# 创建集合
s=set("abcdef") # 通过set把字符串转换成集合
print(s)
s={"张三",23,"男"} # 使用花括号创建集合
print(s,len(s)) # len 返回集合元素个数

#增加元素
s.add("王五")

#合并集合
s={"张三","李四","王五"}
s1={"王五","赵六"}
s.update(s1) # s改变，s1不变，去掉重复
print("合并后",s)

# 删除任意元素
print(s.pop()) # 如果集合为空，则会引发 KeyError
print(s)

# 删除指定元素
s={"张三",23,"男","王五"}
s.remove("王五") # 删除元素，如果元素不存在，会报错，无返回值
print(s)
s.discard(23) # 删除元素，如果元素不存在，不会报错，无返回值
print(s)
s={1,2,3,"a","b","c","e"}
s.difference_update([1,2],(3,"a"),{"b","c"}) # 从s中移除在3个入参中出现过的元素
print("删除多个元素",s)

# 清空集合
s.clear()
s.add("中国")
s.add("中国") # 添加重复元素，不会报错，集合不变
print(s)

# 集合的差集
s={"张三","李四","王五"}
s1={"王五","赵六"}
s2=s.difference(s1) # 返回属于s但不属于s1的元素
print(s2)

# 对称差集
s={"张三","李四","王五"}
s1={"王五","赵六"}
s2=s^s1 # 返回两个集合中对方没有的元素
print(s2)

# 遍历集合
s={"张三","李四","王五"}
for i in s:
    print(i,end=",")
print()

# 减法
a={"张三","李四","王五"}
b={"王五","赵六"}
c=a-b # 返回属于a但不属于b的元素
d=b-a # 返回属于b但不属于a的元素
e=a&b # 返回属于a和b的元素
f=a|b # 返回属于a或b的元素
print(c,d,e,f)
print("张三" in a) # 判断元素是否在集合中
print("张三" not in a)
print(a==b)
b={"王五"}
a={"王五"}
print(b in a,a==b)

# 列表转集合
arr=[1,2,3,4,5,6,7,8,9,10]
s=set(arr)
# 集合转列表
arr=list(s)
print(arr)

print(s)

# 元组转集合
tuple=(1,2,3,4,5,6,7,8,9,10)
s=set(tuple)
print(s)

# 找参赛对手
def findAthlete():
    a = set(["x","y","z"])
    b = set(["x","y","z"])
    c = set(["x","y","z"])
    c -= set(("x","z"))
    a -= set(("x"))
    for i in a:
        for j in b:
            for k in c:
                if len(set((i,j,k))) ==3:
                    print("a:%s,b:%s,c:%s"%(i,j,k))
# findAthlete()